package org.formal.system.service;

import java.util.List;
import java.util.Map;

import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;

/**
 * 工作流接口
 * @author jiangyan
 *
 */
public interface WorkflowService {
	
	/**
	 * 根据流程图的key 开启流程实例
	 * @param key 流程key 根据key选择最新版本的工作流
	 * @return 流程实例
	 */
	public ProcessInstance startProcessBykey(String key);
	
	/**
	 * 根据流程图的key 开启流程实例,同时传递全局变量
	 * @param key 流程key 根据key选择最新版本的工作流
	 * @param variables 参数集
	 * @return 流程实例
	 */
	public ProcessInstance startProcessBykey(String key,Map<String,Object> variables);
	/**
	 * 获得某个人的任务列表
	 * @param userId 用户id
	 * @return 任务列表
	 */
	public List<Task> getTasksByUserId(String userId);
	
	/**
	 * 获得分组名称的任务列表
	 * @param userId 用户分组id
	 * @return 任务列表
	 */
	public List<Task> getTasksByGroupId(String userId);
	
	/**
	 * 完成任务
	 * @param taskId 用户id 
	 * @param variables 参数集 推进到下一个节点  false 退回到上一个节点
	 * @return
	 */
	public Boolean completeTask(String taskId,Map<String,Object> variables);
	
	
	/**
	 * 完成一系列任务
	 * @param taskIds 用户id组合
	 * @param variables 参数集
	 * @return
	 */
	public Boolean completeTasks(List<String> taskIds,Map<String,Object> variables);


}
